package com.chandra.pos.customer.service;

import com.chandra.pos.customer.dao.entity.Customer;
import com.chandra.pos.customer.exception.CustomerNotFoundException;
import com.chandra.pos.customer.model.CustomerSearchCriteria;
import com.chandra.pos.product.dao.entity.Product;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;

import java.util.List;

/**
 * 
 * Customer Service Interface
 * 
 * @author onlinetechvision.com
 * @since 25 Mar 2012
 * @version 1.0.0
 *
 */
public interface ICustomerService {
	
	/**
	 * Add Customer
	 * 
	 * @param  User customer
	 */
	public void addUser(Customer customer);
	
	/**
	 * Update Customer
	 * 
	 * @param  User customer
	 */
	public void updateUser(Customer customer);

	/**
	 * Delete Customer
	 * 
	 * @param  User customer
	 */
	public void deleteUser(Customer customer);
	
	/**
	 * Get Customer
	 * 
	 * @param  int Customer Id
	 */
	public Customer getUserById(Long id);
	
	/**
	 * Get Customer List
	 * 
	 * @return List - Customer list
	 */
	public Page getUsers(PageRequest pagination);


    public List<Customer> searchUsers(CustomerSearchCriteria searchCriteria);

    public Customer getCustomerDetail(String firstName,String lastName,String city) throws CustomerNotFoundException;

    public Customer getCustomerDetail(Long id) throws CustomerNotFoundException;
    public Customer markAsCustomer(Customer customer);

    public List<Customer> searchUsers(String s);
}
